SignalR একটি লাইব্রেরি যা ASP.Net Core-এ রিয়েল-টাইম কমিউনিকেশন সুবিধা প্রদান করে। এটি সার্ভার এবং ক্লায়েন্টের মধ্যে অবিরত কানেকশন বজায় রেখে, একে অপরের মধ্যে ডেটা আদান-প্রদান করার সুবিধা দেয়। SignalR ব্যবহার করে, আপনি সহজেই চ্যাট অ্যাপ্লিকেশন, লাইভ ফিড, বা অন্যান্য রিয়েল-টাইম অ্যাপ্লিকেশন তৈরি করতে পারেন যেখানে ডেটা বা ইনফরমেশন ব্যবহারকারীর স্ক্রীনে তাত্ক্ষণিকভাবে রিফ্রেশ হয়।
SignalR প্রায়শই ব্যবহার করা হয় এমন অ্যাপ্লিকেশনগুলিতে যেমন:
ASP.Net Core SignalR এর মাধ্যমে আপনি ক্লায়েন্ট এবং সার্ভারের মধ্যে রিয়েল-টাইম কমিউনিকেশন সহজে সেটআপ করতে পারেন।
SignalR সার্ভার এবং ক্লায়েন্টের মধ্যে রিয়েল-টাইম ডেটা স্ট্রিমিং সম্পাদন করে। এটি বিভিন্ন ধরণের প্রোটোকল (যেমন WebSocket, Server-Sent Events, Long Polling) ব্যবহার করতে পারে, যাতে এটি সেই পরিবেশের সাথে খাপ খায় যেখানে অ্যাপ্লিকেশন রান করছে।
SignalR এর সাহায্যে, অ্যাপ্লিকেশন রিয়েল-টাইম ইভেন্ট বা ডেটা পরিবর্তনগুলির জন্য ওয়েবসকেট কানেকশন সেটআপ করতে পারে। যদি ওয়েবসকেট ব্যবহার করা সম্ভব না হয়, SignalR স্বয়ংক্রিয়ভাবে fallback পদ্ধতি যেমন Server-Sent Events বা Long Polling ব্যবহার করে।
ASP.Net Core অ্যাপ্লিকেশনে SignalR ইন্টিগ্রেট করার জন্য কিছু ধাপ অনুসরণ করতে হয়। চলুন, এই ধাপগুলো বিস্তারিতভাবে দেখি।
SignalR ব্যবহার শুরু করতে হলে, প্রথমে প্রজেক্টে SignalR NuGet প্যাকেজ ইন্সটল করতে হবে। আপনি NuGet Package Manager ব্যবহার করে এই প্যাকেজটি ইনস্টল করতে পারেন:
Install-Package Microsoft.AspNetCore.SignalR
SignalR ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগের জন্য Hub তৈরি করতে হয়। Hub হলো একটি রিয়েল-টাইম যোগাযোগের কেন্দ্র, যেখানে সার্ভার থেকে ক্লায়েন্টদের মেসেজ পাঠানো এবং ক্লায়েন্ট থেকে সার্ভারে মেসেজ পাঠানো হয়।
using Microsoft.AspNetCore.SignalR;
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
এখানে, SendMessage
মেথডটি একটি মেসেজ সার্ভার থেকে ক্লায়েন্টে পাঠানোর জন্য ব্যবহার করা হয়। Clients.All.SendAsync
সমস্ত সংযুক্ত ক্লায়েন্টদের কাছে মেসেজ পাঠায়।
SignalR Hub কনফিগার করতে Startup.cs ফাইলে এটি পরিষ্কারভাবে রেজিস্টার করতে হবে।
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR(); // SignalR সেবা যুক্ত করা
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/chathub"); // Hub রুটের মাধ্যমে Hub মেপ করা
});
}
এখানে, MapHub<ChatHub>("/chathub")
সিগন্যালআর হাবের URL এপ্লিকেশন পিপলাইনে মেপ করে। এটি ক্লায়েন্টদের সাথে হাবের যোগাযোগ স্থাপন করতে সাহায্য করবে।
SignalR হাবের সাথে যোগাযোগ করতে, ক্লায়েন্ট সাইডে JavaScript কোড ব্যবহার করতে হবে। নিচের উদাহরণটি দেখুন:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>SignalR Chat</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/signalr/3.1.8/signalr.min.js"></script>
</head>
<body>
<div>
<input type="text" id="userInput" placeholder="Enter username" />
<textarea id="messageInput" placeholder="Enter message"></textarea>
<button onclick="sendMessage()">Send</button>
</div>
<ul id="messagesList"></ul>
<script type="text/javascript">
var connection = new signalR.HubConnectionBuilder()
.withUrl("/chathub")
.build();
connection.on("ReceiveMessage", function (user, message) {
var li = document.createElement("li");
li.textContent = `${user}: ${message}`;
document.getElementById("messagesList").appendChild(li);
});
connection.start().catch(function (err) {
return console.error(err.toString());
});
function sendMessage() {
var user = document.getElementById("userInput").value;
var message = document.getElementById("messageInput").value;
connection.invoke("SendMessage", user, message).catch(function (err) {
return console.error(err.toString());
});
}
</script>
</body>
</html>
এখানে, JavaScript কোড SignalR Hub এর সাথে কানেক্ট করছে এবং ReceiveMessage
মেথডের মাধ্যমে মেসেজ গ্রহণ করছে। sendMessage
ফাংশনটি ব্যবহারকারীর ইনপুট পাঠানোর জন্য সার্ভারে কল করে।
SignalR ASP.Net Core অ্যাপ্লিকেশনে রিয়েল-টাইম কমিউনিকেশন প্রতিষ্ঠা করার জন্য একটি শক্তিশালী লাইব্রেরি। এটি ব্যবহারকারীদের জন্য চ্যাট, লাইভ ফিড, নোটিফিকেশন, এবং অন্যান্য রিয়েল-টাইম সেবা প্রদান করতে সহায়ক। SignalR ব্যবহারে রিয়েল-টাইম অ্যাপ্লিকেশন তৈরি করা সহজ এবং কার্যকরী, এবং এটি বিভিন্ন প্রোটোকল সাপোর্ট করার মাধ্যমে বিভিন্ন পরিবেশে কাজ করতে পারে।